/**
 * Created with IntelliJ IDEA.
 * Description:对于双向循环列表，你可以将左右孩子指针作为双向循环链表的前驱和后继指针，
 * 第一个节点的前驱是最后一个节点，最后一个节点的后继是第一个节点。
 * User: wangxin
 * Date: 2025-03-24
 * Time: 21:17
 */
class Node {
    public int val;
    public Node left;
    public Node right;
}
public class Test {
    Node head ,pre;
    public Node treeToDoublyList(Node root) {
        if(root == null){
            return null;
        }
        dfs(root);
        head.left = pre;
        pre.right = head;
        return head;


    }
    public void dfs(Node cur){
        if(cur == null){
            return ;
        }
        dfs(cur.left);
        if(pre != null){
            pre.right = cur;
        }else{
            head = cur;
        }
        cur.left = pre;
        pre = cur;
        dfs(cur.right);
    }
}
